home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / docs / asm_guide / examples / windowexample.s < prev   
Text File  |  1991-10-24  |  3KB  |  156 lines

  1. ;*******************************************************
  2. ;*     Window Example show how to make some basic      *
  3. ;*  library calls. And how to use the include files    *
  4. ;*                                                     *
  5. ;*      ASM-One example coded by Rune Gram-Madsen      *
  6. ;*                                                     *
  7. ;*       All rights reserved. Copyright (c) 1990       *
  8. ;*******************************************************
  9.  
  10.     INCDIR    df0:include/
  11.  
  12. ;---  Open library  ---
  13.  
  14.     include    exec/exec_lib.i
  15.     include    libraries/dos_lib.i
  16.     include    libraries/dos.i
  17.     include    intuition/intuition_lib.i
  18.  
  19. J    BSR.S    DOS_LIBOPEN        ; Open dos library
  20.     BSR.L    INT_LIBOPEN        ; Open intuition library
  21.     BSR.L    WORKBENCH_FRONT        ; Put the workbench to front
  22.     BSR.L    WINDOW_OPEN        ; Open window
  23.  
  24. ;--- Print "Input your name:" ---
  25.  
  26.     MOVE.L    #TEXT1,D2        ; Text start
  27.     MOVEQ    #TEXT1_END-TEXT1,D3    ; text length
  28.     BSR.L    TEXT_WRITE        ; Print text
  29.  
  30. ;--- Input name ---
  31.  
  32.     MOVE.L    #BUFFER1,D2        ; Input buffer
  33.     MOVEQ    #BUFFER1_END-BUFFER1,D3    ; Max input length
  34.     BSR.L    TEXT_READ        ; Input text
  35.  
  36.     MOVE.L    D0,-(A7)        ; Store input length
  37.  
  38. ;--- Print "Your name are" ---
  39.  
  40.     MOVE.L    #TEXT2,D2        ; Text start
  41.     MOVEQ    #TEXT2_END-TEXT2,D3    ; text length
  42.     BSR.L    TEXT_WRITE        ; Print text
  43.  
  44. ;--- Print name ---
  45.  
  46.     MOVE.L    #BUFFER1,D2        ; The old input buffer
  47.     MOVE.L    (A7)+,D3        ; Length of the name
  48.     BSR.L    TEXT_WRITE        ; Print the text
  49.  
  50. ;--- Print "Press <return>" ---
  51.  
  52.     MOVE.L    #TEXT3,D2        ; Text start
  53.     MOVEQ    #TEXT3_END-TEXT3,D3    ; text length
  54.     BSR.L    TEXT_WRITE        ; print text
  55.  
  56. ;--- Read <return> ---
  57.  
  58.     MOVE.L    #BUFFER2,D2        ; buffer
  59.     MOVEQ    #BUFFER2_END-BUFFER2,D3    ; buffer length
  60.     BSR.L    TEXT_READ        ; read <return>
  61.  
  62. ;--- Close down ---
  63.  
  64.     BSR.S    WINDOW_CLOSE        ; Close window
  65.     BSR.L    WORKBENCH_BACK        ; workbench back again
  66.     BSR.S    INT_LIBCLOSE        ; close intuition lib
  67.     BSR.S    DOS_LIBCLOSE        ; close dos
  68.     RTS
  69.  
  70. ;--- Open dos library ---
  71.  
  72. DOS_LIBOPEN
  73.     LEA.L    _DOSNAME(PC),A1
  74.     MOVEQ    #0,D0
  75.     CALLEXEC OpenLibrary
  76.     MOVE.L    D0,_DOSBASE
  77.     RTS
  78.  
  79. ;--- Close dos library ---
  80.  
  81. DOS_LIBCLOSE
  82.     MOVE.L    _DOSBASE(PC),A1
  83.     CALLEXEC CloseLibrary
  84.     RTS
  85.  
  86. ;--- Open intuition library ---
  87.  
  88. INT_LIBOPEN
  89.     LEA.L    _INTNAME(PC),A1
  90.     MOVEQ    #0,D0
  91.     CALLEXEC OpenLibrary
  92.     MOVE.L    D0,_INTUITIONBASE
  93.     RTS
  94.  
  95. ;--- Close intuition library ---
  96.  
  97. INT_LIBCLOSE
  98.     MOVE.L    _INTUITIONBASE(PC),A1
  99.     CALLEXEC CloseLibrary
  100.     RTS
  101.  
  102. ;--- Open window ---
  103.  
  104. WINDOW_OPEN
  105.     MOVE.L    #_WINDOWNAME,D1
  106.     MOVE.L    #MODE_OLDFILE,D2
  107.     CALLDOS    Open
  108.     MOVE.L    D0,_WINDOWHANDLE
  109.     RTS
  110.  
  111. ;--- Close window ---
  112.  
  113. WINDOW_CLOSE
  114.     MOVE.L    _WINDOWHANDLE(PC),D1
  115.     CALLDOS    Close
  116.     RTS
  117.  
  118. ;--- Workbench to front ---
  119.  
  120. WORKBENCH_FRONT
  121.     CALLINT    WbenchToFront
  122.     RTS
  123.  
  124. ;--- Workbench to back ---
  125.  
  126. WORKBENCH_BACK
  127.     CALLINT    WbenchToBack
  128.     RTS
  129.  
  130. TEXT_READ
  131.     MOVE.L    _WINDOWHANDLE,D1
  132.     CALLDOS    Read
  133.     RTS
  134.  
  135. TEXT_WRITE
  136.     MOVE.L    _WINDOWHANDLE,D1
  137.     CALLDOS    Write
  138.     RTS
  139.  
  140. _WINDOWNAME    DC.B    'CON:10/10/600/100/My Window',0
  141. _WINDOWHANDLE    DC.L    0
  142. _DOSNAME    DOSNAME
  143. _DOSBASE    DC.L    0
  144. _INTNAME    DC.B    'intuition.library',0
  145. _INTUITIONBASE    DC.L    0
  146. TEXT1        DC.B    'Input your name: '
  147. TEXT1_END
  148. TEXT2        DC.B    'Your name is: '
  149. TEXT2_END
  150. TEXT3        DC.B    'Press <return> '
  151. TEXT3_END
  152. BUFFER1        DCB.B    80,0
  153. BUFFER1_END
  154. BUFFER2        DCB.B    1,0
  155. BUFFER2_END
  156.